﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace _6.StudyCode.Structure
{
    static class Program
    {
        static void Main()
        {
            //1数组

            //初始化
            int[] intArry = { 1, 2, 3, 4, };

            intArry = new[] { 1, 2, 3, 4 };

            intArry = new int[] { 1, 2, 3, 4, };

            //常用属性
            //长度 intArry.Length;
            // 索引器 intArry[1]

            //2列表 元素是可以重复的
            var list = new List<int> { 1, 2, 3, 4, 5, 6, 1,1,1,1};

            //常用属性
            //长度 list.Count;
            //索引器 list[1] 下表，元素位置
            //增加 
            list.Add(6);
            //删除 
            list.Remove(6);

            //键值对 
            var keyValuePair = new KeyValuePair<string, string>("Key1","Value1");

            //3字典 key 是不可以重复的
            var dict = new Dictionary<string, string>();
            dict.Add("1", "V1"); //添加
            dict.Add("2", "V2"); 
            dict.Add("3", "V3");

            dict.Remove("2");//移除

            //索引器是按照key的值来访问的 dict["1"];
            //如果key不存在，就会抛出异常  如下;
            //Console.WriteLine(dict["4"]);
            //所以在使用dictionary的时候如果要取value的值的话，就要先判断key是否存在
            //方法1
            if (dict.ContainsKey("4"))
            {
                Console.WriteLine(dict["4"]);
            }
            //方法2
            string value;
            if (dict.TryGetValue("3", out value))
            {
                Console.WriteLine(value);
            } 

            //使用，缓存(因为访问内存比硬盘快，所以有些经常使用的数据会放到内存
            // ，然后dictionary就是常用的缓存存放方式)
            var dictStudents = new Dictionary<string, Student>();



            //IEnumerable 实现这个接口才能使用foreach
            //http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(foreach_CSharpKeyword);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true


            var lista = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 90,};
            var student = new Student { Books = new List<string>(),  Name = "Skyven"};
            //{"firstName":"Brett"}

            foreach (var book in student)
            {

            }


            Console.ReadLine();
        }
    }
    public class Student:IEnumerable
    {
        public List<string> Books { get; set; } 

        public string Number { get; set; }
        public string Name { get; set; }
        public string StudyIdentify { get; set; }

        public IEnumerator GetEnumerator()
        {
            //http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(yield_CSharpKeyword);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true
           yield return Books;
        }
    }
}
